home *** CD-ROM | disk | FTP | other *** search
- ***********************************************************
- * This little program shows how to use the BPLCON1 register
- * to produce a neat "wavy" effect.
- * 1992 Epsilon
- ***********************************************************
-
- WaitVblank MACRO
- .\@ move.l 4(a5),d0
- andi.l #$3ff00,d0
- cmpi.l #$0f400,d0
- bne.b .\@
- ENDM
-
- ***********************************************************
-
- bsr.w TakeSystem
- MouseWait: WaitVblank
-
- bsr.b Waves
-
- btst #6,$bfe001
- bne.s MouseWait
-
- bsr.w RestoreSystem
- rts ; Done!
-
- ***********************************************************
-
- Waves: lea list+6,a0 ; addr. of copper list in a0
- lea sine_wave,a1 ; sine_wave table +
- add.l wave_offset,a1 ; offset in a1
- moveq #14,d0 ; loop counter
- wave_top: move.w (a1)+,(a0)+ ; move new scroll value
- addq.l #6,a0 ; next spot in copper
- dbra d0,wave_top ; loop
-
- addq.l #2,wave_offset ; next position in sine table
- cmpi.l #16,wave_offset ; end of list?
- bne.s no_w
- clr.l wave_offset ; set back to start of list
- no_w: rts
-
- ***********************************************************
-
- TakeSystem: move.l #$dff000,a5 ; Custom chip base
-
- bsr.w InstallBmap
- bsr.w InstallSprites
- move.l #Copper,$80(a5) ; install copper
- rts ; Done
-
- ***********************************************************
-
- RestoreSystem: move.l #$dff000,a5 ; Custom chip base
-
- movea.l 4.w,a6 ; ExecBase
- lea GraphicsName,a1 ; "graphics.library"
- jsr -$198(a6) ; OldOpenLibrary()
- move.l d0,a1 ; Copy ptr to GfxBase
- move.l $26(a1),$80(a5) ; Install old system copperlist
- jsr -$19e(a6) ; CloseLibrary()
- jsr -$8a(a6) ; Permit() multitasking
- rts ; Done
-
- ***********************************************************
-
- InstallBmap: lea bmapptrs+2,a0
- move.l #Bmap,d0 ; say our bmap address is $12345678
- move.w d0,4(a0) ; write $5678 to $e2 reg in clist
- swap d0
- move.w d0,(a0) ; write $1234 to $e0
- rts
-
- ***********************************************************
-
- InstallSprites: lea sprptrs+2,a0
- move.l #NullSprite,d0
- move.w d0,4(a0)
- move.w d0,12(a0)
- move.w d0,20(a0)
- move.w d0,28(a0)
- move.w d0,36(a0)
- move.w d0,44(a0)
- move.w d0,52(a0)
- move.w d0,60(a0)
- swap d0
- move.w d0,(a0)
- move.w d0,8(a0)
- move.w d0,16(a0)
- move.w d0,24(a0)
- move.w d0,32(a0)
- move.w d0,40(a0)
- move.w d0,48(a0)
- move.w d0,56(a0)
- rts
-
- ***********************************************************
-
- section amazin_fruit,data
-
- GraphicsName: dc.b 'graphics.library',0
- EVEN
-
- sine_wave: dc.w $0000,$0011,$0022,$0033,$0022,$0011,$0000
- dc.w $0000,$0011,$0022,$0033,$0022,$0011,$0000
- dc.w $0000,$0011,$0022,$0033,$0022,$0011,$0000
- dc.w $0000,$0011,$0022,$0033,$0022,$0011,$0000
- dc.w $0000,$0011,$0022,$0033,$0022,$0011,$0000
-
- Wave_Ptr: dc.l sine_wave ; address of wave table
- wave_offset: dc.l 0
-
- ***********************************************************
-
- section squid,data_c
-
- Copper: dc.w $0100,$1200 ; bit plane control reg.0
- dc.w $0102,$0000 ; scroll value
- dc.w $0104,$0000 ; blp/sprite priority reg.
- dc.w $0108,$0000 ; odd bitplane modulo value
- dc.w $010a,$0000 ; even bitplane modulo value
- dc.w $0180,$0000 ; color00 = black
- dc.w $0182,$0fff ; color01 = white
- dc.w $008e,$2c81 ; upper left corner of disp. window
- dc.w $0090,$f4c1 ; lower right corner of disp. window
- dc.w $0092,$0038 ; start of bpl. (horizontal)
- dc.w $0094,$00d0 ; endo of bpl. (horizontal)
- bmapptrs:dc.w $00e0,$0000 ; adr of bplane 1 (long - 2 words)
- dc.w $00e2,$0000 ; low word of bplane 1 adr
- sprptrs:dc.w $0120,$0000,$0122,$0000,$0124,$0000,$0126,$0000
- dc.w $0128,$0000,$012a,$0000,$012c,$0000,$012e,$0000
- dc.w $0130,$0000,$0132,$0000,$0134,$0000,$0136,$0000
- dc.w $0138,$0000,$013a,$0000,$013c,$0000,$013e,$0000
-
- dc.w $500f,$fffe
- list: dc.w $510f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $520f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $530f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $540f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $550f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $560f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $570f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $580f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $590f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $5a0f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $5b0f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $5c0f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $5d0f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $5e0f,$fffe,$0102,$0000 ; odd bitplane modulo value
- dc.w $810f,$fffe,$0182,$0000
- dc.l -2,-2
-
- NullSprite: dc.l 0,0,0 ; 2 controll words,2 data words,2 blank word
-
- Bmap: incbin "fun.raw"
-